package com.ssy.lingxi.platform.template.service.service.web;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.model.vo.PageVO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.platform.template.service.entity.door.MemberShop;
import com.ssy.lingxi.platform.template.service.model.dto.common.CollectDTO;
import com.ssy.lingxi.platform.template.service.model.dto.common.IdDTO;
import com.ssy.lingxi.platform.template.service.model.dto.common.IdListDTO;
import com.ssy.lingxi.platform.template.service.model.dto.common.MemberIdRoleIdShopIdDTO;
import com.ssy.lingxi.platform.template.service.model.dto.web.SaveShopDTO;
import com.ssy.lingxi.platform.template.service.model.qo.CommonIdListPageQO;
import com.ssy.lingxi.platform.template.service.model.qo.MemberShopInGoodsListAdornQO;
import com.ssy.lingxi.platform.template.service.model.qo.MemberShopQO;
import com.ssy.lingxi.platform.template.service.model.vo.web.*;

import java.util.List;

/**
 * @menu web - 会员店铺门户 - 业务处理层
 * @author fhj
 * @version 2.0.0
 * @date 2020/12/09
 */
public interface MemberShopWebService {

    Wrapper<Void> saveCurrMemberShop(SaveShopDTO dto, UserLoginCacheDTO user);

    Wrapper<MemberShop> findCurrMemberShop(UserLoginCacheDTO user);

    Wrapper<MemberShopMainVO> memberShopMain(MemberIdRoleIdShopIdDTO dto, UserLoginCacheDTO user);

    Wrapper<PageData<MemberShopListVO>> memberShopList(MemberShopQO qo, Long shopId);

    Wrapper<PageData<MemberShop>> memberShopListAdorn(PageVO dto, String memberName);

    Wrapper<List<MemberShopInGoodsListAdornVO>> memberShopInGoodsListAdorn(MemberShopInGoodsListAdornQO qo);

    Wrapper<List<MemberShop>> newAddMemberShop();

    Wrapper<Void> collect(CollectDTO dto, UserLoginCacheDTO user);

    Wrapper<PageData<MemberShop>> collectList(PageVO dto, UserLoginCacheDTO user);

    Wrapper<MemberShop> findById(IdDTO dto);

    Wrapper<List<MemberShop>> findByIdIn(IdListDTO dto);

    Wrapper<PageData<MemberShop>> pageByIdNotIn(CommonIdListPageQO qo);

    Wrapper<PageData<MemberShop>> pageByIdIn(CommonIdListPageQO qo);

    Wrapper<PageData<MemberShopProductVO>> pageProductByIdIn(CommonIdListPageQO qo, Long shopId);

    Wrapper<List<MemberShopMainCategoryVO>> findMainCategoryByIdIn(IdListDTO dto);
}
